#ifndef WIDGET_H
#define WIDGET_H

#include <QWidget>
#include <QMessageBox>
#include <QApplication>
#include <QDebug>
#include<QPixmap>
#include<QRect>
#include<ctime>
#include<QPaintEvent>
#include<QTimer>
#include<QIcon>
#include<QPixmap>
#include<QString>
#include<queue>
#include "bead.h"
#include "endgamedialog.h"
#include "config.h"
#include "me.h"
#include <QSound>
#include <QLabel>
#include <QColor>
using namespace std;
QT_BEGIN_NAMESPACE
namespace Ui { class Widget; }
QT_END_NAMESPACE





//
class Widget : public QWidget
{
    Q_OBJECT

public:
    static int flag2;
    static int flag1;
    static int is_exit_num;
    static int score;
    static int plaid[PLAID_NUM][PLAID_NUM];
    Widget(QWidget *parent = nullptr);
    void judgeScore(int score);
    void creatBeadposition();//随机生成珠子位置
    void creatBeadcolor();//随机生成珠子颜色
    void disappearBead(int i,int j);//点击初始格子消失
    void appearBead(int i,int j,int last_color);//在点击所移坐标处出现格子
    void defaultGame();
    bool seekpath(Bead& a,Bead& b);
    Bead beads[PLAID_NUM][PLAID_NUM];
    void initScene();
    void deleteBeads();
    QTimer * m_time;
    QPixmap pix[4];
    bool eliminateBeads(int x,int y);
    static int last_x;
    static int last_y;
    static int last_color;
    static int present_x;
    static int present_y;
    static int flag;
    QPixmap pix1;
    ~Widget();
protected:
    void paintEvent(QPaintEvent *event); //引入绘图事件
    void mousePressEvent(QMouseEvent *event);//鼠标按下
    void mouseDoubleClickEvent(QMouseEvent *event);
private:
    Ui::Widget *ui;

public:

    void playGame(); //开始游戏
    bool isGameEnd(); //判断游戏是否结束的方法

    void autoShowGameEndDialog();//自动显示游戏结束对话框
    void jieMian(); //界面相关操作
    void updateScore(); //实时修改分数
    void moShiAndGuanQiaChoose(); //模式和关卡选择
    bool isChuangGuanOrWujin; //判断是闯关模式还是无尽模式，真表示闯关，假表示无尽
    int guanQia; //关卡数
//    Bead beads[9][9];
    EndGameDialog * egd; //游戏结束对话框
    Me * me; //我对话框
    QSound * play[4];

    //bool isLogin;
    //QString score; //分数


signals:
    void showMainMenu(); //显示主菜单
    void showMe(); //显示我界面
    void sendChangeScoreInMeUi(); //发送分数信号
public slots:
    void closeWidget(); //关闭主窗口
    void showWidget(); //显示主窗口
    void recChangeScoreInMainWidget(); //接收我界面发送的分数
    void recMoShi(); //接收模式选择完成信号
    void endMusic();
    void endGame();
public slots:




    void on_again_clicked();

    void on_mainMenu_clicked();


    void on_end_clicked();



    void on_help_clicked();

    void on_me_clicked();


};
#endif // WIDGET_H











//

//class Widget : public QWidget
//{
//    Q_OBJECT



